
from core.basic.skill import 技能
from core.basic.character import Character
from core.basic.skill import 主动技能, 被动技能


class 技能0(主动技能):
    名称 = "波动刻印"
    所在等级 = 15
    等级上限 = 30
    学习间隔 = 3
    等级精通 = 20
    CD = 1
    MP = [126, 1380]
    无色消耗 = 0
    data0 = [0, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78]
    hit0 = 1
    data1 = [0, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154]
    hit1 = 1
    data2 = [0, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231]
    hit2 = 1
    TP成长 = 0.1
    TP上限 = 5

    关联技能 = ['所有']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        elif self.等级 <= 20:
            return round(1.00 + 0.005 * self.等级, 5)
        else:
            return round(1.10 + 0.015 * (self.等级 - 20), 5)


class 技能1(被动技能):
    名称 = '基础精通'
    倍率 = 1.0
    所在等级 = 1
    等级上限 = 200
    学习间隔 = 1
    等级精通 = 110
    # 基础等级 = 等级
    关联技能 = ['波动刻印']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(self.倍率 * (0.463 + 0.089 * self.等级), 5)


class 技能2(主动技能):
    名称 = "地裂·波动剑"
    所在等级 = 15
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    CD = 3
    MP = [17, 168]
    无色消耗 = 0
    data0 = [0, 3077, 3389, 3700, 4012, 4324, 4637, 4949, 5261, 5575, 5885, 6198, 6510, 6822, 7135, 7446, 7758, 8071, 8382, 8695, 9007, 9320, 9629, 9943, 10255, 10568, 10879, 11193, 11503, 11816, 12127, 12441, 12752, 13066, 13375, 13688, 14001, 14313, 14625, 14936, 15248, 15560, 15874, 16184, 16498, 16808, 17121, 17433, 17746, 18058, 18371, 18682, 18995, 19306, 19619, 19930, 20244, 20555, 20866, 21178, 21490, 21804, 22116, 22428, 22741, 23051, 23364, 23677, 23988, 24301, 24612]
    hit0 = 1
    TP成长 = 0.1
    TP上限 = 7

    形态 = ["地裂", "光翼"]

    def 等效百分比(self, **argv):
        # 武器类型 额外等级 额外倍率 伤害类型 形态
        武器类型 = argv.get('武器类型', '')
        额外等级 = argv.get('额外等级', 0)
        额外倍率 = argv.get('额外倍率', 1.0)
        伤害类型 = argv.get('伤害类型', '直伤')
        形态 = argv.get('形态', '地裂')
        char = argv.get('char', {})

        if 形态 == "地裂":
            self.CD = 3
            等级 = min(self.等级 + 额外等级, self.等级上限)
            等效倍率 = self.基础百分比(伤害类型, 等级)

            return 等效倍率 * self.TP加成() * self.技攻 * self.倍率 * 额外倍率
        if 形态 == "光翼":
            self.CD = 1.2
            skill = char.get_skill_by_name("暗天波动眼")
            # 额外倍率暂不确定 应该是跟着觉醒走
            return skill.等效百分比(形态=形态, 伤害类型=伤害类型) * self.TP加成() * 额外倍率


class 技能3(主动技能):
    名称 = "鬼印珠"
    所在等级 = 15
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    CD = 6
    MP = [95, 980]
    无色消耗 = 0
    data0 = [0, 242, 263, 289, 313, 339, 361, 388, 412, 437, 459, 485, 508, 534, 557, 584, 608, 633, 654, 680, 704, 728, 752, 779, 805, 825, 850, 876, 902, 923, 948, 975, 1001, 1021, 1047, 1072, 1098, 1119, 1145, 1171, 1196, 1217, 1243, 1267, 1293, 1315, 1340, 1365, 1391, 1411, 1438, 1463, 1488, 1510, 1536, 1561, 1587, 1607, 1634, 1659, 1683, 1706, 1732, 1759, 1782, 1803, 1830, 1855, 1879, 1905, 1927]
    hit0 = 18
    data1 = [0, 1083, 1196, 1304, 1411, 1525, 1634, 1744, 1855, 1967, 2075, 2188, 2296, 2404, 2514, 2626, 2735, 2846, 2956, 3065, 3177, 3287, 3394, 3505, 3615, 3727, 3837, 3946, 4056, 4169, 4277, 4385, 4497, 4607, 4715, 4829, 4937, 5046, 5159, 5267, 5375, 5488, 5598, 5707, 5819, 5929, 6038, 6151, 6259, 6366, 6481, 6589, 6698, 6809, 6919, 7028, 7139, 7250, 7359, 7470, 7580, 7690, 7800, 7908, 8019, 8129, 8241, 8350, 8462, 8569, 8680]
    hit1 = 1
    TP成长 = 0.1
    TP上限 = 7

    # 波动刻印增幅 5印
    倍率 = 1+0.2


class 技能4(主动技能):
    名称 = "邪光斩"
    所在等级 = 20
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    CD = 10
    MP = [65, 616]
    无色消耗 = 0
    data0 = [0, 2528, 2786, 3042, 3300, 3555, 3813, 4068, 4325, 4581, 4840, 5095, 5352, 5609, 5866, 6120, 6379, 6634, 6892, 7148, 7403, 7660, 7919, 8175, 8431, 8687, 8945, 9200, 9458, 9715, 9970, 10227, 10483, 10740, 10997, 11254, 11511, 11767, 12024, 12279, 12537, 12794, 13050, 13305, 13562, 13820, 14078, 14333, 14589, 14846, 15103, 15358, 15617, 15872, 16129, 16386, 16644, 16900, 17156, 17411, 17670, 17925, 18183, 18438, 18696, 18953, 19208, 19464, 19722, 19979, 20235]
    hit0 = 3
    TP成长 = 0.1
    TP上限 = 7


class 技能5(被动技能):
    名称 = '修罗邪光斩'
    所在等级 = 20
    等级上限 = 11
    基础等级 = 1
    关联技能 = ['邪光斩']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.45 + 0.05 * self.等级, 5)


class 技能6(主动技能):
    名称 = "波动爆发"
    所在等级 = 25
    等级上限 = 70
    学习间隔 = 3
    等级精通 = 60
    CD = 7.5
    MP = [65, 630]
    无色消耗 = 0
    data0 = [0, 8670, 10052, 11434, 12817, 14200, 15582, 16965, 18347, 19729, 21112, 22494, 23876, 25261, 26643, 28023, 29405, 30788, 32170, 33552, 34938, 36320, 37702, 39085, 40467, 41849, 43232, 44614, 45997, 47380, 48760, 50143, 51526, 52906, 54290, 55674, 57055, 58438, 59821, 61202, 62585, 63968, 65349, 66733, 68116, 69496, 70879, 72261, 73643, 75026, 76409, 77791, 79174, 80556, 81938, 83321, 84703, 86085, 87469, 88851, 90232, 91614, 92997, 94379, 95761, 97146, 98527, 99910, 101293, 102675, 104057]
    hit0 = 1
    TP成长 = 0.1
    TP上限 = 7


class 技能7(被动技能):
    名称 = '挫折意志'
    所在等级 = 25
    等级上限 = 20
    基础等级 = 10

    关联技能 = ['所有']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.13 + 0.02 * self.等级, 5)


class 技能8(主动技能):
    名称 = "冰刃·波动剑"
    所在等级 = 30
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    CD = 7
    MP = [27, 308]
    无色消耗 = 0
    data0 = [0, 876, 965, 1054, 1143, 1231, 1321, 1410, 1500, 1587, 1675, 1767, 1858, 1945, 2033, 2120, 2212, 2303, 2391, 2477, 2568, 2659, 2747, 2834, 2921, 3013, 3102, 3192, 3277, 3368, 3459, 3547, 3634, 3723, 3816, 3904, 3991, 4079, 4169, 4262, 4350, 4436, 4526, 4615, 4706, 4794, 4878, 4970, 5061, 5151, 5236, 5325, 5417, 5507, 5593, 5682, 5770, 5863, 5949, 6039, 6127, 6217, 6306, 6397, 6485, 6572, 6663, 6750, 6842, 6927, 7018]
    hit0 = 9
    TP成长 = 0.1
    TP上限 = 7

    形态 = ["冰刃", "天照"]

    def 等效百分比(self, **argv):
        # 武器类型 额外等级 额外倍率 伤害类型 形态
        武器类型 = argv.get('武器类型', '')
        额外等级 = argv.get('额外等级', 0)
        额外倍率 = argv.get('额外倍率', 1.0)
        伤害类型 = argv.get('伤害类型', '直伤')
        形态 = argv.get('形态', '冰刃')
        char = argv.get('char', {})

        if 形态 == "冰刃":
            self.CD = 3
            等级 = min(self.等级 + 额外等级, self.等级上限)
            等效倍率 = self.基础百分比(伤害类型, 等级)

            return 等效倍率 * self.TP加成() * self.技攻 * self.倍率 * 额外倍率
        if 形态 == "天照":
            self.CD = 2
            skill = char.get_skill_by_name("暗天波动眼")
            # 额外倍率暂不确定 应该是跟着觉醒走
            return skill.等效百分比(形态=形态, 伤害类型=伤害类型) * self.TP加成() * 额外倍率


class 技能9(主动技能):
    名称 = "杀意波动"
    所在等级 = 30
    等级上限 = 20
    学习间隔 = 2
    等级精通 = 10
    CD = 5
    MP = [268, 2935]
    无色消耗 = 0
    data0 = [0, 428, 443, 457, 472, 486, 498, 514, 527, 542, 555, 569, 585, 596, 611, 623, 637, 653, 665, 682, 694]
    hit0 = 2
    TP成长 = 0.1
    TP上限 = 7

    def 等效CD(self,  **argv):
        return 1


class 技能10(主动技能):
    名称 = "爆炎·波动剑"
    所在等级 = 35
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    CD = 15
    MP = [130, 1092]
    无色消耗 = 1
    data0 = [0, 5605, 6173, 6742, 7310, 7879, 8446, 9016, 9584, 10152, 10720, 11287, 11859, 12426, 12994, 13562, 14132, 14701, 15269, 15839, 16405, 16975, 17542, 18113, 18681, 19250, 19819, 20387, 20956, 21522, 22094, 22657, 23228, 23796, 24366, 24932, 25504, 26072, 26639, 27209, 27777, 28345, 28914, 29484, 30052, 30619, 31191, 31758, 32327, 32895, 33462, 34031, 34600, 35171, 35736, 36304, 36873, 37441, 38010, 38581, 39148, 39715, 40284, 40853, 41422, 41991, 42561, 43129, 43697, 44264, 44835]
    hit0 = 3
    data1 = [0, 12, 12, 13, 14, 16, 17, 19, 20, 21, 21, 23, 24, 26, 27, 28, 29, 29, 31, 32, 35, 36, 38, 38, 38, 39, 40, 41, 42, 44, 44, 46, 48, 49, 50, 52, 52, 53, 53, 54, 57, 58, 59, 61, 61, 62, 63, 65, 67, 68, 68, 70, 70, 71, 72, 75, 76, 77, 78, 78, 79, 82, 83, 83, 84, 86, 87, 88, 89, 90, 91]
    hit1 = 3
    TP成长 = 0.1
    TP上限 = 5

    形态 = ["爆炎", "闪枪"]

    def 等效百分比(self, **argv):
        # 武器类型 额外等级 额外倍率 伤害类型 形态
        武器类型 = argv.get('武器类型', '')
        额外等级 = argv.get('额外等级', 0)
        额外倍率 = argv.get('额外倍率', 1.0)
        伤害类型 = argv.get('伤害类型', '直伤')
        形态 = argv.get('形态', '爆炎')
        char = argv.get('char', {})

        if 形态 == "爆炎":
            self.CD = 15
            等级 = min(self.等级 + 额外等级, self.等级上限)
            等效倍率 = self.基础百分比(伤害类型, 等级)

            return 等效倍率 * self.TP加成() * self.技攻 * self.倍率 * 额外倍率
        if 形态 == "闪枪":
            self.CD = 4.9
            skill = char.get_skill_by_name("暗天波动眼")
            # 额外倍率暂不确定 应该是跟着觉醒走
            return skill.等效百分比(形态=形态, 伤害类型=伤害类型) * self.TP加成() * 额外倍率


class 技能11(主动技能):
    名称 = "无双波"
    所在等级 = 35
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    CD = 20
    MP = [140, 1176]
    无色消耗 = 1
    data0 = [0, 19371, 21337, 23304, 25267, 27232, 29198, 31163, 33128, 35093, 37061, 39025, 40990, 42952, 44923, 46885, 48851, 50818, 52783, 54747, 56713, 58679, 60644, 62609, 64572, 66541, 68503, 70471, 72435, 74403, 76365, 78332, 80299, 82263, 84227, 86195, 88160, 90125, 92088, 94058, 96021, 97984, 99951, 101916, 103882, 105846, 107812, 109777, 111743, 113707, 115677, 117640, 119606, 121568, 123538, 125500, 127467, 129429, 131398, 133361, 135324, 137294, 139258, 141224, 143188, 145155, 147119, 149085, 151049, 153018, 154980]
    hit0 = 1
    TP成长 = 0.1
    TP上限 = 5

    是否有护石 = 1

    def 装备护石(self, char):
        self.倍率 *= 1.36


class 技能12(主动技能):
    名称 = "邪光波动阵"
    所在等级 = 40
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    CD = 20
    MP = [180, 1512]
    无色消耗 = 1
    data0 = [0, 2156, 2373, 2594, 2811, 3030, 3250, 3466, 3684, 3904, 4125, 4342, 4561, 4778, 4997, 5216, 5436, 5653, 5872, 6092, 6310, 6529, 6748, 6967, 7184, 7403, 7620, 7841, 8061, 8279, 8497, 8716, 8934, 9154, 9370, 9589, 9809, 10027, 10248, 10466, 10684, 10902, 11122, 11339, 11558, 11776, 11996, 12216, 12434, 12654, 12871, 13090, 13308, 13526, 13745, 13965, 14183, 14401, 14620, 14839, 15058, 15277, 15494, 15714, 15933, 16151, 16371, 16589, 16807, 17026, 17246]
    hit0 = 1
    data1 = [0, 1971, 2169, 2371, 2571, 2769, 2971, 3170, 3370, 3568, 3771, 3967, 4170, 4369, 4570, 4767, 4970, 5171, 5369, 5570, 5770, 5970, 6169, 6370, 6569, 6769, 6970, 7168, 7370, 7568, 7770, 7968, 8170, 8368, 8569, 8768, 8968, 9167, 9368, 9568, 9768, 9968, 10168, 10368, 10567, 10767, 10969, 11166, 11368, 11568, 11768, 11967, 12168, 12367, 12566, 12767, 12968, 13167, 13367, 13567, 13767, 13967, 14167, 14366, 14567, 14765, 14966, 15166, 15367, 15564, 15766]
    hit1 = 7
    data2 = [0, 5605, 6172, 6742, 7309, 7879, 8447, 9016, 9585, 10154, 10723, 11290, 11858, 12427, 12996, 13565, 14133, 14702, 15271, 15838, 16407, 16974, 17544, 18112, 18682, 19250, 19818, 20386, 20955, 21525, 22094, 22662, 23232, 23799, 24367, 24936, 25504, 26074, 26642, 27211, 27779, 28348, 28918, 29484, 30054, 30623, 31192, 31760, 32328, 32896, 33466, 34033, 34603, 35170, 35739, 36308, 36876, 37444, 38012, 38581, 39151, 39720, 40288, 40858, 41426, 41996, 42562, 43132, 43700, 44269, 44836]
    hit2 = 1
    TP成长 = 0.1
    TP上限 = 5

    是否有护石 = 1

    def 装备护石(self, char):
        self.倍率 *= 1.15 + 0.09
        self.CDR *= 0.85 - 0.08


class 技能13(主动技能):
    名称 = "不动明王阵"
    所在等级 = 45
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    CD = 45
    MP = [400, 3360]
    无色消耗 = 2
    data0 = [0, 1730, 1911, 2082, 2260, 2437, 2611, 2785, 2967, 3138, 3314, 3493, 3668, 3841, 4022, 4195, 4370, 4546, 4724, 4898, 5077, 5255, 5427, 5607, 5778, 5957, 6133, 6309, 6481, 6664, 6835, 7011, 7190, 7365, 7538, 7720, 7891, 8067, 8239, 8422, 8594, 8769, 8946, 9123, 9296, 9475, 9648, 9825, 10002, 10178, 10349, 10531, 10708, 10880, 11062, 11234, 11410, 11588, 11765, 11936, 12118, 12291, 12465, 12642, 12821, 12992, 13173, 13345, 13522, 13699, 13874]
    hit0 = 15
    data1 = [0, 12813, 14114, 15415, 16716, 18016, 19312, 20616, 21917, 23214, 24515, 25818, 27115, 28415, 29716, 31018, 32315, 33617, 34917, 36214, 37516, 38817, 40119, 41414, 42717, 44018, 45316, 46616, 47919, 49216, 50517, 51817, 53115, 54418, 55720, 57020, 58316, 59619, 60921, 62217, 63519, 64821, 66116, 67418, 68720, 70022, 71319, 72620, 73920, 75217, 76520, 77821, 79119, 80418, 81721, 83020, 84320, 85620, 86922, 88220, 89521, 90821, 92119, 93421, 94724, 96022, 97320, 98623, 99924, 101220, 102523]
    hit1 = 1
    TP成长 = 0.1
    TP上限 = 5

    # 5印不动增幅
    倍率 = 1 + 0.2
    是否有护石 = 1

    def 装备护石(self, char):
        self.倍率 *= 1+0.16+0.17


class 技能14(被动技能):
    名称 = '心眼'
    所在等级 = 48

    等级上限 = 50
    学习间隔 = 3
    等级精通 = 40

    关联技能 = ['所有']
    关联技能1 = ['地裂·波动剑']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        elif self.等级 <= 16:
            return round(0.99 + 0.04 + 0.015 * self.等级, 5)
        else:
            return round(1.23 + 0.04 + 0.02 * (self.等级 - 16), 5)

    def 加成倍率1(self, 武器类型):
        return self.地波加成() / self.加成倍率(武器类型)

    def 地波加成(self):
        if self.等级 == 0:
            return 1.0
        elif self.等级 <= 16:
            return round(1.105 + 0.04 + 0.015 * self.等级, 5)
        else:
            return round(1.345 + 0.04 + 0.02 * (self.等级 - 16), 5)


class 技能15(主动技能):
    名称 = "暗天波动眼"
    所在等级 = 50
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40
    CD = 140
    MP = [1500, 12600]
    无色消耗 = 7
    # 最后天眼爆炸
    data0 = [0, 74304, 91535, 108765, 125997, 143226, 160459, 177688, 194919, 212148, 229379, 246609, 263840, 281069, 298300, 315529, 332761, 349989, 367221, 384450, 401682, 418911, 436142, 453372, 470604, 487835, 505064, 522295, 539525, 556755, 573986, 591216, 608447, 625677, 642908, 660138, 677366, 694598, 711827, 729060, 746287, 763519, 780749, 797980, 815209, 832440, 849671, 866901, 884131, 901362, 918592]
    hit0 = 1
    # 普通攻击第一击魔法
    data1 = [0, 1367, 1685, 1998, 2318, 2633, 2947, 3266, 3584, 3901, 4217, 4534, 4851, 5166, 5485, 5800, 6118, 6432, 6752, 7069, 7386, 7702, 8018, 8335, 8649, 8971, 9288, 9605, 9921, 10236, 10554, 10870, 11188, 11504, 11823, 12137, 12455, 12773, 13087, 13405, 13720, 14040, 14354, 14673, 14989, 15306, 15621, 15938, 16259, 16574, 16893]
    hit1 = 0
    # 普通攻击第二击魔法
    data2 = [0, 1537, 1893, 2250, 2604, 2961, 3318, 3675, 4032, 4385, 4744, 5101, 5455, 5813, 6173, 6527, 6883, 7239, 7597, 7952, 8307, 8665, 9022, 9378, 9735, 10088, 10446, 10805, 11160, 11517, 11872, 12230, 12585, 12941, 13299, 13656, 14011, 14369, 14723, 15081, 15440, 15792, 16150, 16508, 16863, 17220, 17574, 17931, 18290, 18646, 19003]
    hit2 = 0
    # 普通攻击第三击魔法
    data3 = [0, 1706, 2102, 2499, 2896, 3292, 3687, 4083, 4480, 4876, 5269, 5667, 6063, 6459, 6855, 7250, 7646, 8044, 8439, 8836, 9231, 9627, 10026, 10420, 10816, 11213, 11607, 12004, 12399, 12795, 13193, 13587, 13984, 14380, 14776, 15173, 15569, 15966, 16360, 16756, 17151, 17551, 17945, 18340, 18737, 19133, 19530, 19926, 20319, 20716, 21113]
    hit3 = 0
    # 波动剑 · 刺轮
    data4 = [0, 393, 483, 574, 664, 756, 848, 937, 1029, 1121, 1211, 1303, 1393, 1484, 1576, 1667, 1757, 1847, 1941, 2031, 2121, 2212, 2306, 2395, 2486, 2578, 2667, 2760, 2851, 2944, 3032, 3123, 3217, 3305, 3396, 3490, 3583, 3670, 3764, 3854, 3943, 4033, 4128, 4219, 4307, 4400, 4494, 4579, 4673, 4765, 4855]
    hit4 = 0
    # 波动剑 · 光翼
    data5 = [0, 3544, 4370, 5192, 6014, 6838, 7662, 8480, 9303, 10127, 10951, 11773, 12593, 13416, 14241, 15063, 15885, 16709, 17528, 18352, 19175, 19998, 20823, 21643, 22464, 23287, 24112, 24934, 25755, 26579, 27401, 28224, 29046, 29867, 30692, 31512, 32336, 33159, 33982, 34804, 35626, 36448, 37272, 38095, 38916, 39740, 40564, 41383, 42205, 43029, 43852]
    hit5 = 0
    # 波动剑 · 天照
    data6 = [0, 869, 1072, 1275, 1475, 1676, 1878, 2079, 2281, 2485, 2685, 2886, 3089, 3290, 3491, 3695, 3895, 4099, 4299, 4499, 4703, 4905, 5104, 5307, 5510, 5710, 5913, 6114, 6318, 6517, 6719, 6920, 7121, 7326, 7526, 7729, 7930, 8133, 8333, 8537, 8737, 8937, 9141, 9340, 9544, 9746, 9949, 10150, 10352, 10554, 10752]
    hit6 = 0
    # 波动剑 · 闪枪
    data7 = [0, 1129, 1391, 1656, 1915, 2178, 2442, 2704, 2966, 3226, 3488, 3752, 4013, 4275, 4537, 4801, 5060, 5324, 5587, 5848, 6110, 6371, 6635, 6895, 7159, 7422, 7684, 7945, 8209, 8468, 8733, 8994, 9258, 9518, 9779, 10042, 10306, 10566, 10830, 11091, 11354, 11613, 11877, 12140, 12403, 12662, 12926, 13187, 13451, 13714, 13974]
    hit7 = 0

    形态 = ["开眼", "平X"]

    def 形态变更(self, 形态, char: Character):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "开眼":
            self.hit0 = 1
            self.hit1 = 0
            self.hit2 = 0
            self.hit3 = 0
            self.hit4 = 0
            self.hit5 = 0
            self.hit6 = 0
            self.hit7 = 0
        if 形态 == "平X":
            self.hit0 = 0
            self.hit1 = 1
            self.hit2 = 1
            self.hit3 = 1
            self.hit4 = 10
            self.hit5 = 0
            self.hit6 = 0
            self.hit7 = 0
        if 形态 == "光翼":
            self.hit0 = 0
            self.hit1 = 0
            self.hit2 = 0
            self.hit3 = 0
            self.hit4 = 0
            self.hit5 = 1
            self.hit6 = 0
            self.hit7 = 0
        if 形态 == "天照":
            self.hit0 = 0
            self.hit1 = 0
            self.hit2 = 0
            self.hit3 = 0
            self.hit4 = 0
            self.hit5 = 0
            self.hit6 = 5
            self.hit7 = 0
        if 形态 == "闪枪":
            self.hit0 = 0
            self.hit1 = 0
            self.hit2 = 0
            self.hit3 = 0
            self.hit4 = 0
            self.hit5 = 0
            self.hit6 = 0
            self.hit7 = 7


class 技能16(主动技能):
    名称 = "极冰·裂波剑"
    所在等级 = 60
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40
    CD = 20
    MP = [400, 1120]
    无色消耗 = 1
    data0 = [0, 2525, 2782, 3037, 3292, 3549, 3806, 4063, 4317, 4573, 4832, 5084, 5344, 5601, 5853, 6111, 6368, 6624, 6877, 7136, 7393, 7647, 7904, 8161, 8419, 8672, 8931, 9187, 9439, 9699, 9954, 10210, 10466, 10722, 10980, 11236, 11492, 11746, 12006, 12262, 12515, 12774, 13027, 13287, 13541, 13798, 14053, 14309, 14567, 14823, 15082]
    hit0 = 3
    data1 = [0, 3746, 4126, 4507, 4887, 5266, 5645, 6026, 6407, 6789, 7169, 7549, 7928, 8309, 8690, 9068, 9449, 9829, 10209, 10590, 10968, 11349, 11730, 12110, 12493, 12871, 13251, 13632, 14012, 14390, 14771, 15151, 15530, 15913, 16294, 16673, 17054, 17433, 17812, 18193, 18575, 18954, 19333, 19712, 20092, 20472, 20851, 21237, 21615, 21996, 22376]
    hit1 = 5
    TP成长 = 0.1
    TP上限 = 5

    是否有护石 = 1

    def 装备护石(self, char):
        self.power0 = 1.53
        self.power1 = 1.24


class 技能17(主动技能):
    名称 = "极炎·裂波剑"
    所在等级 = 70
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40
    CD = 50
    MP = [800, 1680]
    无色消耗 = 2
    data0 = [0, 3596, 3963, 4327, 4692, 5059, 5421, 5786, 6150, 6517, 6882, 7247, 7612, 7975, 8341, 8706, 9071, 9436, 9801, 10167, 10531, 10895, 11260, 11625, 11991, 12356, 12721, 13085, 13450, 13816, 14181, 14545, 14910, 15276, 15640, 16005, 16370, 16735, 17100, 17466, 17831, 18193, 18559, 18925, 19290, 19655, 20020, 20385, 20749, 21115, 21480]
    hit0 = 8
    data1 = [0, 7194, 7923, 8655, 9383, 10113, 10844, 11573, 12305, 13033, 13763, 14493, 15224, 15953, 16682, 17414, 18142, 18872, 19604, 20332, 21062, 21793, 22522, 23252, 23982, 24712, 25442, 26172, 26902, 27631, 28363, 29091, 29821, 30553, 31280, 32012, 32742, 33470, 34201, 34930, 35662, 36390, 37119, 37851, 38579, 39309, 40040, 40770, 41498, 42229, 42961]
    hit1 = 4

    # 灼伤待定
    灼伤data0 = [0, 123, 131, 145, 155, 169, 184, 194, 208, 217, 230, 244, 254, 267, 281, 291, 307, 314, 330, 343, 353, 366, 374, 390, 403, 414, 428, 437, 452, 466, 474, 488, 497, 512, 527, 537, 551, 558, 574, 588, 598, 611, 621, 634, 649, 658, 672, 682, 695, 711, 719]
    灼伤hit0 = 4
    # bug:灼伤实际伤害只有面板的1/28.16
    灼伤power0 = 1/28.16

    TP成长 = 0.1
    TP上限 = 5

    是否有护石 = 1

    def 装备护石(self, char):
        self.hit0 = 0
        self.power1 = 1+1.3+0.28
        self.灼伤hit0 = 4


class 技能18(主动技能):
    名称 = "天雷·波动剑"
    所在等级 = 75
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40
    CD = 40
    MP = [580, 4500]
    无色消耗 = 3
    data0 = [0, 16688, 18378, 20073, 21765, 23457, 25151, 26843, 28539, 30232, 31919, 33613, 35305, 37000, 38695, 40387, 42082, 43772, 45465, 47160, 48850, 50543, 52239, 53929, 55622, 57314, 59009, 60703, 62395, 64090, 65778, 67473, 69166, 70859, 72554, 74247, 75936, 77632, 79323, 81016, 82712, 84403, 86096, 87788, 89482, 91175, 92868, 94562, 96251, 97946, 99640]
    hit0 = 5
    data1 = [0, 20857, 22974, 25091, 27206, 29323, 31440, 33555, 35673, 37787, 39902, 42021, 44136, 46251, 48368, 50485, 52600, 54718, 56833, 58951, 61067, 63182, 65296, 67412, 69530, 71646, 73761, 75878, 77995, 80111, 82227, 84344, 86461, 88575, 90692, 92808, 94923, 97040, 99155, 101273, 103388, 105504, 107622, 109738, 111852, 113969, 116086, 118201, 120319, 122433, 124548]
    hit1 = 1
    感电data0 = [0, 106, 117, 127, 139, 151, 161, 169, 182, 193, 202, 216, 227, 237, 246, 256, 267, 278, 288, 299, 313, 322, 331, 343, 354, 365, 377, 386, 398, 409, 419, 431, 441, 450, 463, 473, 484, 494, 505, 516, 527, 538, 548, 560, 571, 581, 593, 602, 613, 625, 636]
    感电hit0 = 6

    是否有护石 = 1

    def 装备护石(self, char):
        self.hit0 = 0
        self.power1 = 1+4.4+0.8
        self.感电hit0 = 1


class 技能19(主动技能):
    名称 = '雷神之息'
    是否主动 = 0
    所在等级 = 75
    等级上限 = 50
    学习间隔 = 3
    等级精通 = 40

    CD = 2.5
    关联技能 = ['所有']
    感电data0 = [0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 18, 18, 19, 21, 21, 23, 23, 24, 24, 24, 26, 28, 28, 30, 31, 31, 32, 32, 33, 35, 35, 37, 39, 39, 41, 41, 41, 42, 42, 43, 45, 45, 46, 48, 48, 50, 51, 51]
    感电hit0 = 1

    data0 = [0, 5714, 6624, 7533, 8446, 9357, 10266, 11174, 12089, 12999, 13910, 14819, 15729, 16641, 17550, 18461, 19372, 20284, 21193, 22104, 23015, 23926, 24836, 25747, 26658, 27569, 28481, 29390, 30300, 31212, 32123, 33028, 33941, 34852, 35762, 36673, 37584, 38494, 39406, 40315, 41226, 42138, 43048, 43959, 44870, 45780, 46692, 47601, 48513, 49423, 50334]
    hit0 = 1

    def 等效CD(self,  **argv):
        return 2.5

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.06 + 0.02 * self.等级, 5)

    # def 感电加成(self):
    #     if self.等级 == 0:
    #         return 1.0
    #     else:
    #         return round(1.186+0.002* self.等级,4)


class 技能20(主动技能):
    名称 = "天雷·降魔杵"
    所在等级 = 80
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40
    CD = 45
    MP = [800, 6000]
    无色消耗 = 5
    data0 = [0, 1264, 1392, 1521, 1653, 1777, 1905, 2033, 2163, 2291, 2418, 2547, 2678, 2802, 2929, 3061, 3188, 3316, 3443, 3574, 3702, 3829, 3956, 4086, 4214, 4343, 4472, 4600, 4730, 4855, 4983, 5114, 5241, 5367, 5499, 5624, 5753, 5881, 6010, 6137, 6267, 6395, 6525, 6650, 6779, 6909, 7036, 7165, 7292, 7422, 7551]
    hit0 = 16
    data1 = [0, 15976, 17598, 19219, 20840, 22459, 24084, 25706, 27325, 28944, 30566, 32191, 33809, 35434, 37050, 38672, 40296, 41918, 43535, 45154, 46777, 48403, 50020, 51639, 53263, 54883, 56502, 58125, 59750, 61368, 62986, 64608, 66232, 67853, 69469, 71092, 72713, 74337, 75959, 77577, 79198, 80820, 82446, 84060, 85684, 87306, 88926, 90543, 92168, 93790, 95411]
    hit1 = 1
    data2 = [0, 44680, 49212, 53744, 58283, 62813, 67344, 71876, 76415, 80945, 85478, 90010, 94540, 99079, 103610, 108140, 112673, 117210, 121743, 126274, 130803, 135341, 139873, 144406, 148938, 153474, 158005, 162538, 167070, 171607, 176139, 180670, 185203, 189740, 194271, 198802, 203334, 207865, 212404, 216934, 221465, 225999, 230531, 235068, 239599, 244132, 248663, 253194, 257732, 262263, 266795]
    hit2 = 1
    感电data0 = [0, 56, 58, 66, 70, 76, 80, 86, 93, 99, 102, 107, 116, 119, 125, 132, 136, 142, 148, 152, 159, 164, 170, 174, 180, 185, 192, 196, 202, 206, 213, 217, 225, 229, 235, 241, 244, 251, 258, 260, 269, 273, 278, 283, 290, 293, 301, 305, 311, 317, 321]
    感电hit0 = 16

    形态 = ["终结", "雷针"]

    def 形态变更(self, 形态, char: Character):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "雷针":
            self.hit0 = 3*2
            self.hit1 = 0
            self.hit2 = 0
            self.感电hit0 = 6
        if 形态 == "终结":
            self.hit0 = 8*2
            self.hit1 = 1
            self.hit2 = 1
            self.感电hit0 = 16

    是否有护石 = 1

    def 装备护石(self, char):
        self.power1 = 1.48
        self.power2 = 1.48
        # self.护石加成 *= 1.35628


class 技能21(主动技能):
    名称 = "雷神降世：裁决"
    所在等级 = 85
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40
    CD = 180
    MP = [1500, 5000]
    无色消耗 = 10
    data0 = [0, 24387, 30050, 35702, 41364, 47017, 52674, 58331, 63986, 69643, 75303, 80955, 86615, 92269, 97933, 103581, 109242, 114894, 120552, 126209, 131864, 137523, 143176, 148835, 154490, 160150, 165802, 171459, 177119, 182776, 188431, 194088, 199741, 205398, 211055, 216718, 222370, 228024, 233685, 239337, 244994, 250654, 256309, 261964, 267623, 273275, 278938, 284592, 290247, 295904, 301562]
    hit0 = 1
    data1 = [0, 43897, 54089, 64262, 74455, 84630, 94813, 104996, 115174, 125357, 135545, 145720, 155906, 166085, 176278, 186446, 196635, 206810, 216992, 227175, 237354, 247541, 257716, 267903, 278081, 288270, 298442, 308627, 318814, 328997, 339176, 349359, 359533, 369716, 379899, 390092, 400266, 410445, 420632, 430806, 440989, 451177, 461356, 471534, 481722, 491895, 502088, 512267, 522446, 532628, 542811]
    hit1 = 5
    感电data0 = [0, 155, 189, 227, 263, 300, 335, 371, 407, 442, 478, 515, 550, 584, 622, 659, 694, 730, 766, 800, 839, 875, 908, 945, 980, 1015, 1054, 1089, 1124, 1160, 1196, 1233, 1270, 1303, 1340, 1376, 1411, 1449, 1483, 1518, 1554, 1592, 1627, 1665, 1699, 1734, 1773, 1808, 1844, 1879, 1913]
    感电hit0 = 25


class 技能22(被动技能):
    名称 = '波动视界：慧眼'
    所在等级 = 95
    等级上限 = 40
    学习间隔 = 3
    等级精通 = 30

    关联技能 = ['所有']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.18 + 0.02 * self.等级, 5)


class 技能23(主动技能):
    名称 = "波动慧眼：无为法"
    所在等级 = 95
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40
    CD = 60
    MP = [1067, 8000]
    无色消耗 = 7
    data0 = [0, 11460, 12623, 13784, 14947, 16111, 17272, 18435, 19599, 20759, 21922, 23087, 24248, 25410, 26573, 27736, 28899, 30060, 31223, 32386, 33550, 34711, 35874, 37037, 38198, 39362, 40525, 41687, 42849, 44013, 45176, 46338, 47500, 48662, 49824, 50989, 52150, 53312, 54476, 55638, 56800, 57964, 59127, 60287, 61452, 62614, 63775, 64939, 66102, 67264, 68427]
    hit0 = 5
    data1 = [0, 171899, 189339, 206778, 224217, 241654, 259093, 276535, 293974, 311411, 328849, 346289, 363728, 381167, 398606, 416045, 433484, 450924, 468362, 485801, 503240, 520680, 538120, 555558, 572996, 590435, 607874, 625315, 642754, 660192, 677630, 695070, 712510, 729947, 747388, 764826, 782266, 799705, 817142, 834584, 852024, 869462, 886902, 904340, 921779, 939218, 956658, 974097, 991536, 1008974, 1026414]
    hit1 = 1


class 技能24(主动技能):
    名称 = "波动神诀：万空"
    所在等级 = 100
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40
    CD = 290
    MP = [4028, 8056]
    无色消耗 = 15
    data0 = [0, 192342, 236942, 281542, 326142, 370744, 415344, 459945, 504546, 549148, 593747, 638349, 682950, 727551, 772150, 816752, 861352, 905952, 950556, 995157, 1039757, 1084359, 1128958, 1173559, 1218160, 1262762, 1307361, 1351962, 1396564, 1441165, 1485765, 1530367, 1574966, 1619567, 1664167, 1708770, 1753369, 1797971, 1842572, 1887172, 1931772, 1976376, 2020975, 2065576, 2110175, 2154776, 2199378, 2243980, 2288581, 2333182, 2377782]
    hit0 = 1
    data1 = [0, 32057, 39491, 46923, 54356, 61789, 69224, 76657, 84091, 91522, 98956, 106392, 113825, 121258, 128690, 136124, 143559, 150993, 158427, 165858, 173292, 180726, 188159, 195594, 203026, 210460, 217892, 225327, 232762, 240193, 247627, 255060, 262492, 269927, 277360, 284795, 292227, 299660, 307096, 314528, 321963, 329396, 336828, 344261, 351696, 359128, 366563, 373996, 381429, 388863, 396296]
    hit1 = 6
    data2 = [0, 96169, 118471, 140770, 163072, 185373, 207672, 229972, 252272, 274572, 296873, 319173, 341474, 363776, 386076, 408376, 430677, 452977, 475277, 497577, 519877, 542178, 564477, 586777, 609080, 631381, 653681, 675981, 698280, 720582, 742880, 765182, 787482, 809783, 832081, 854384, 876686, 898986, 921287, 943585, 965887, 988186, 1010486, 1032787, 1055088, 1077388, 1099688, 1121989, 1144290, 1166590, 1188889]
    hit2 = 2
    data3 = [0, 194556, 239671, 284785, 329901, 375014, 420129, 465243, 510358, 555474, 600589, 645702, 690818, 735932, 781047, 826163, 871276, 916390, 961506, 1006620, 1051736, 1096852, 1141964, 1187079, 1232193, 1277309, 1322425, 1367538, 1412653, 1457768, 1502882, 1547998, 1593112, 1638227, 1683343, 1728456, 1773571, 1818685, 1863801, 1908916, 1954029, 1999145, 2044259, 2089374, 2134489, 2179604, 2224718, 2269832, 2314947, 2360063, 2405177]
    hit3 = 1


class classChange(Character):
    def __init__(self, equVersion=""):
        self.实际名称 = 'asura'
        self.名称 = '极诣·阿修罗'
        self.角色 = '鬼剑士(男)'
        self.职业 = '阿修罗'
        self.类型 = '输出'

        self.武器选项 = ['太刀', '钝器', '巨剑', '短剑']

        self.输出类型选项 = ['魔法固伤']

        self.防具精通属性 = ['智力']

        self.类型 = '魔法固伤'
        self.武器类型 = '短剑'
        self.防具类型 = '板甲'

        self.buff = 1.59
        技能列表 = []
        技能序号 = {}
        i = 0
        while i >= 0:
            try:
                tem = eval('技能'+str(i)+'()')
                tem.基础等级计算()
                技能序号[tem.名称] = i
                技能列表.append(tem)
                i += 1
            except:
                i = -1
        self.技能栏 = 技能列表
        self.技能序号 = 技能序号

        super().__init__(equVersion)

    # def 职业特殊计算(self):
    #     雷神之息 = self.get_skill_by_name('雷神之息')
    #     self.伤害系数['感电'] *= 雷神之息.感电加成()
    #     self.skills_passive['雷神之息']['info'].append({
    #         "type": "倍率",
    #         "info": [round((雷神之息.感电加成() -1)*100,2), '感电', '无']
    #     })

    def 伤害计算(self):
        额外倍率 = 1.0
        for skill in self.技能队列:
            if skill['名称'] == '暗天波动眼':
                额外倍率 = skill['倍率']
                break
        if 额外倍率 > 1:
            for index in range(0,len(self.技能队列)):
                if self.技能队列[index]['名称'] == '地裂·波动剑' and self.技能队列[index]['形态'] == '光翼':
                    self.技能队列[index]['倍率'] = 额外倍率
                if self.技能队列[index]['名称'] == '冰刃·波动剑' and self.技能队列[index]['形态'] == '天照':
                    self.技能队列[index]['倍率'] = 额外倍率
                if self.技能队列[index]['名称'] == '爆炎·波动剑' and self.技能队列[index]['形态'] == '闪枪':
                    self.技能队列[index]['倍率'] = 额外倍率
        return super().伤害计算()